package org.gap.wizards.world;

import java.awt.Dimension;
import java.awt.Point;
import java.io.IOException;
import java.util.List;

import org.gap.wizards.creature.Creature;
import org.gap.wizards.items.Item;
import org.gap.wizards.pc.PlayerCharacter;
import org.gap.wizards.utils.Persistence;
import org.gap.wizards.views.ViewPlatform;

public interface Location {

	Point getCharacterLocation();
	void setCharacterLocation(Point newLocation);

	boolean canMoveTo(Point newPoint);
	boolean isBlocked(Point point);
	void move(Movement move);

	void update();
	void draw(ViewPlatform console);

	void setDimensions(Dimension dimensions);
	Dimension getDimensions();

	void addItem(Item money);
	void addItemAt(Point location, Item item);
	void removeItem(Item each);
	
	void addTransition(MapTransition mapTransition);

	boolean addCreature(Creature creature);
	void removeCreature(Creature creature);
	
	List<Object> getAllFromLocation(Point toPickupFrom);

	void persist(Persistence persistence);
	void load(Persistence persistence) throws IOException;
	
	PlayerCharacter getPlayerCharacter();
	void setPlayerCharacter(PlayerCharacter player);
}
